package com.lanou3g.code0516;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;

/*今日小结:
1.@MultipartConfig详解,通过@MultipartConfig来上传文件,但是用它了,就不能使用servletFileUpload
还有它里边java自带的一些上传文件相关方法
2.相对路径与绝对路径
3.九大内置对象out,requet,response,session详解
4.登录注册通过session来实现
 */

//从servlet中拿到session,得通过request.getSession()拿到
/**
 * Created by dllo on 18/5/16.
 */
@WebServlet(name = "MyUpServlet", urlPatterns = "/myup")
@MultipartConfig(maxFileSize = 1024 * 1024 * 100/*100M*/)
/*@MultipartConfig里封装的一些方法:
location:上传文件的临时文件夹,就是当你写了这个注解之后,用户一上传文件,就会缓存在你的服务器里,当你读的时候,直接在服务器里读
maxFileSize:设置文件大小
 */
//用@MultipartConfig,就不能用servletFileUpload
public class MyUpServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //上传文件
        //根据表单中的name属性,拿到要上传的文件
        //@MultipartConfig在servlet3.0之后才有--升级idea自然就有了
        Part file = request.getPart("file");
        //file.getName()拿到的是在表单中的name属性值
        System.out.println(file.getName());
        //获取文件类型
        System.out.println(file.getContentType());
        //获取文件大小
        System.out.println(file.getSize());
        //获取文件详情
        System.out.println(file.getHeader("content-disposition"));
        String fileName = getServletContext().getRealPath("")//调用getServletContext()域方法,getRealPath获取绝对路径
                + File.separator + "upload"
                + File.separator + file.getName();
        file.write(fileName);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
